package com.kaifamiao.store.system;

import java.lang.reflect.Proxy;

public class ProxyDemo {

    public static void main(String[] args) {
        // 被代理对象
        DB db = new DB();

        // 创建代理对象
        JDBC jdbc = (JDBC) Proxy.newProxyInstance(DB.class.getClassLoader(),
                DB.class.getInterfaces(),
                //  InvocationHandler 的 invoke 方法
                (proxy, method, args1) -> {
                    System.out.println("记录日志 start");
                    // 执行方法调用
                    Object invoke = method.invoke(db, args1);

                    System.out.println("记录日志 end");
                    return invoke;
                });

        // 代理对象执行方法，都会调用 InvocationHandler 的 invoke 方法
        jdbc.query();

    }
}

interface JDBC {
    void query();
}
class DB implements JDBC{

    @Override
    public void query(){
        System.out.println("查询数据");
    }
}
